package com.cjm.algorithm.leetcode;

public class MinStack {
    class LinkNode {
        int value;
        LinkNode minNode;
        LinkNode parentNode;

        public LinkNode(int value, LinkNode topNode) {
            this.value = value;
            parentNode = topNode;

            if (topNode == null || value < topNode.value) {
                minNode = topNode;
            } else {
                minNode = topNode.minNode;
            }
        }
    }

    LinkNode topNode;
    public MinStack () {
        // 初始化时， 这个节点是为null的
        topNode = null;
    }

    public void push(int x) {
        LinkNode node;
        if (topNode == null) {
            node = new LinkNode(x, null);
        } else {
            node = new LinkNode(x, topNode);
        }
    }

    public void pop() {
        topNode = topNode.parentNode;
    }
    public int top() {
        return topNode.value;
    }
    public int minValue() {
        return topNode.minNode.value;
    }
}
